home *** CD-ROM | disk | FTP | other *** search
- 10 * = $0801
- 20 ;PRIME SRC
- 30 ;P
- 40 .S
- 50 .D PRIME ML
- 60 ;
- 70 MAP = $01
- 80 COUNT = $3F
- 90 STEP = $41
- 100 BCDBUF = $55
- 110 RESULT = $5A
- 120 RORBUF = $5F
- 130 CURRENT = $FB
- 140 NOTPRIME = $FD
- 150 TOD = $DC08
- 160 SCRCHR = $E716
- 170 ;
- 180 START .BYTE 11 8 0 0 158:.BYTE "2061":.BYTE 0 0 0
- 190 JMP INIT
- 200 ;
- 210 DISPLAY STA RORBUF:STX RORBUF+1:LDX #$09:LDA #$00
- 220 DISP2 STA BCDBUF,X:DEX:BPL DISP2:LDA #$01:STA BCDBUF
- 230 DISP3 CLC:ROR RORBUF+1:ROR RORBUF:BCC DISP5:LDY #$05:LDX #$00:SED:CLC
- 240 DISP4 LDA RESULT,X:ADC BCDBUF,X:STA RESULT,X:INX:DEY:BNE DISP4
- 250 DISP5 LDY #$05:LDX #$00:SED:CLC
- 260 DISP6 LDA BCDBUF,X:ADC BCDBUF,X:STA BCDBUF,X:INX:DEY:BNE DISP6:CLD
- 270 LDA RORBUF:BNE DISP3:LDA RORBUF+1:BNE DISP3:LDA #$37:STA MAP
- 280 LDA $D6:CMP #$18:BCC DISP7:LDA $D3:CMP #$20:BCC DISP7:LDA #$93:JSR SCRCHR
- 290 DISP7 LDX #$05
- 300 DISP8 DEX:BEQ DISP9:LDA RESULT,X:BEQ DISP8
- 310 DISP9 LDA RESULT,X:PHA:LSR:LSR:LSR:LSR:BEQ DISP10:ORA #$30:JSR SCRCHR
- 320 DISP10 PLA:AND #$0F:ORA #$30:JSR SCRCHR:DEX:BMI DISP12
- 330 DISP11 LDA RESULT,X:PHA:LSR:LSR:LSR:LSR:ORA #$30:JSR SCRCHR
- 340 PLA:AND #$0F:ORA #$30:JSR SCRCHR:DEX:BPL DISP11
- 350 DISP12 LDA #$20:JSR SCRCHR:SEI:LDA #$30:STA MAP:RTS
- 360 ;
- 370 INIT LDA #$93:JSR SCRCHR:LDA #$9F:JSR SCRCHR:LDA #$0B:STA $D020:STA $D021
- 380 SEI:LDA #$30:STA MAP:LDA #<TABLE:STA CURRENT:LDA #>TABLE:STA CURRENT+1
- 390 LDA #$00:STA COUNT:STA COUNT+1:TAY
- 400 INIT2 STA (CURRENT),Y:INY:BNE INIT2
- 410 INC CURRENT+1:LDX CURRENT+1:CPX #$FF:BCC INIT2:STY CURRENT
- 420 INIT3 STA (CURRENT),Y:DEY:BNE INIT3
- 430 LDA #<TABLE:STA CURRENT:LDA #>TABLE:STA CURRENT+1:LDA #$37:STA MAP
- 440 LDA TOD+7:AND #$7F:STA TOD+7:LDX #$04:LDA #$00
- 450 INIT4 STA TOD,X:DEX:BPL INIT4:STX TABLE+1:SEI:LDA #$30:STA MAP
- 460 ;
- 470 LOOP INC CURRENT:BNE LOOP2:INC CURRENT+1:BEQ QUIT
- 480 LOOP2 LDA (CURRENT),Y:BNE LOOP:INC COUNT:BNE LOOP3:INC COUNT+1
- 490 LOOP3 LDA CURRENT:STA NOTPRIME:SEC:SBC #<TABLE:STA STEP
- 500 LDA CURRENT+1:STA NOTPRIME+1:SBC #>TABLE:STA STEP+1:LDX #$01:CLC
- 510 LOOP4 LDA NOTPRIME:ADC STEP:STA NOTPRIME:LDA NOTPRIME+1:ADC STEP+1
- 520 STA NOTPRIME+1:BCC LOOP5:LDA STEP:LDX STEP+1:JSR DISPLAY:BNE LOOP
- 530 LOOP5 TXA:STA (NOTPRIME),Y:BCC LOOP4
- 540 ;
- 550 QUIT LDA #$37:STA MAP:LDA #$0D:JSR SCRCHR:LDA COUNT:LDX COUNT+1:JSR DISPLAY
- 560 LDA #$37:STA MAP:CLI:LDA #$20:JSR SCRCHR:LDY #$03
- 570 TIME LDA TOD,Y:AND #$7F:PHA:LSR:LSR:LSR:LSR:ORA #$30:JSR SCRCHR:PLA
- 580 AND #$0F:ORA #$30:JSR SCRCHR:CPY #$02:BCC TIME2:LDA #$3A:.BYTE 44
- 590 TIME2 LDA #$2E:JSR SCRCHR:DEY:BNE TIME:LDA TOD:AND #$0F:ORA #$30:JMP SCRCHR
- 600 ;
- 610 TABLE .BYTE 0 0 0
- 620 ;
- 630 .END PRIME SRC
-